/**
 * @properties={typeid:35,uuid:"BDC1A67B-B506-40A7-AD18-15AD8492254D",variableType:93}
 */
var fecha_abril_2013 = null;

/**
 * @properties={typeid:35,uuid:"525A6477-8933-4596-ABD3-852D1EE1086E",variableType:6}
 */
var f_porcent = 0.00;

/**
 * Callback method for when form is shown.
 *
 * @param {Boolean} firstShow form is shown first time after load
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"2EE6C03D-6914-4717-996E-6C7AB3EC6242"}
 */
function iniciar() 
{
	globals.gFechaHasta = new Date();
	globals.gFechaDesde = new Date();
	globals.gFechaDesde = globals.gFechaDesde.setDate (globals.gFechaHasta.getDate() - 30);
	
	// 26/04/2013 setea f_porcent de acuerdo con la fecha hasta,que luego se usa en el calculo - tambien si se cambia la fecha hasta
	var fecha_abril = application.getServerTimeStamp() // no se si hace falta ?
	fecha_abril.setFullYear(2013,03,01) // se le pone un mes menos para que dé 01/04/2013, porque si no pone 1/5/2013
	//fecha_abril_2013.setHours(00,00,00,00)
	fecha_abril.setHours(00);
	fecha_abril.setMinutes(00);
	fecha_abril.setSeconds(00);  
	fecha_abril_2013 = fecha_abril
	if (globals.gFechaHasta < fecha_abril_2013) 
		f_porcent = 7;  // para fecha < 1/4/2013 debe ir el porc. anterior 7% (que estaba fijo)
	else
		f_porcent = globals.gPorcenComision;	//  va nuevo % parametrizado en esta variable
	//  26/04/2013  hasta
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"90312C78-4870-4EBB-9B95-63E0C0869215"}
 */
function vista_previa(event) 
{  // usa mismo metodo para los 2 botones: si busca usa DIALOG, si no usa PREVIEW
if ((globals.gFechaDesde != null) && (globals.gFechaHasta != null))
{
	//databaseManager.setAutoSave(true)  //  ver si hace falta
	controller.loadAllRecords()
	var estado_find=controller.find()
	if (estado_find==false)
	{
		globals.gMensaje = 'No encontró cabeceras de liquidaciones'
		globals.gMensajes();
		return false;
	}
	//Rango de Fechas //////////////////////////////
	var d1 = globals.gFechaDesde
	d1.setHours(00);
	d1.setMinutes(00);
	d1.setSeconds(00);             
	var df1 = utils.dateFormat(d1, 'dd-MM-yyyy HH:mm:ss')
	
	var d2 = globals.gFechaHasta
	d2.setHours(23);
	d2.setMinutes(59);
	d2.setSeconds(59);
	var df2 = utils.dateFormat(d2, 'dd-MM-yyyy HH:mm:ss')
	
	fecha = df1+'...' + df2+'|dd-MM-yyyy HH:mm:ss'
	marca_anulacion='!=1'  //05/01/2011 distinto de 1 - saltea las anuladas
	
	//tipo_doc=6	// 18/02/2011   
	// deben ir  codigos 6, 41 y 42  // 18/02/2011
	tipo_doc=6  // liquidacion
	forms.ingbrut_1.controller.newRecord();
	fecha = df1+'...' + df2+'|dd-MM-yyyy HH:mm:ss' //25/10/2012 repite condición por OR lógico
	marca_anulacion='!=1'   //25/10/2012 repite condición por OR lógico
	tipo_doc=41+'...'+42    // notas credito y debito viajes
	
	//Buscar en el rango
	var found = forms.ingbrut_1.controller.search()
	if (found == 0)
	{
		globals.gMensaje = 'No se encontraron liquidaciones con esas condiciones';
		globals.gMensajes();
		return false;
	}
	
	foundset.sort('fecha asc')  // aqui tiene aplicacion?
		
	// arma dataset con todas las provincias 
	var fs_prov= databaseManager.getFoundSet(controller.getServerName(),'provincias')
	fs_prov.loadAllRecords()
	fs_prov.find()
	var found_prov=fs_prov.search()
	if (found_prov == 0)
    {	
	   globals.gMensaje = 'No estan cargadas las provincias'
	   globals.gMensajes();
	   return false;
    }
	
	// crea dataset con las provincias
	uno_mas=30 + 1  // cuantos van? van otros paises? 
	var tabla_prov = databaseManager.createEmptyDataSet(uno_mas, new Array('Provincia','Descripcion','Viajes Propios','Viajes Terceros','Comision','Gastos'))

	//blanquea descripcion e importes
	for ( var k = 1 ; k <= uno_mas-1 ; k ++ )
	{
		tabla_prov.setValue(k, 1, k);
		tabla_prov.setValue(k, 2, ' ');
		tabla_prov.setValue(k, 3, 0);
		tabla_prov.setValue(k, 4, 0);
		tabla_prov.setValue(k, 5, 0);
		tabla_prov.setValue(k, 6, 0);
	}
	tabla_prov.setValue(uno_mas, 1, 0);
	tabla_prov.setValue(uno_mas, 2, 'Totales ');
	tabla_prov.setValue(uno_mas, 3, 0);
	tabla_prov.setValue(uno_mas, 4, 0);
	tabla_prov.setValue(uno_mas, 5, 0);
	tabla_prov.setValue(uno_mas, 6, 0);
	
	// recorre cabecera
	var cuantos_viajes=0
	var gastos_x_viaje=0
	var comision_x_viaje=0
	var desc=" Inicial "
	var	cod_prov=0
	
	// 10/12/2010  desde
	// crea foundset de ingresos brutos de viajes auxiliar
	var fs_aux = databaseManager.getFoundSet(controller.getServerName(),'ingbrut_control_viaj') // 10/12/2010
	fs_aux.loadAllRecords();
	var cuantos=fs_aux.getSize()  // 10/12/2010   solo paraver cuantos luego sacar
	// borra tabla auxiliar de ingresos brutos de viajes
	fs_aux.deleteAllRecords();
	if (fs_aux.deleteAllRecords()==false)
	{
		globals.gMensaje = 'No pudo borrar tabla auxiliar'
		globals.gMensajes();
		return;
	} 
	// 10/12/2010  hasta
	var cuantos_f = databaseManager.getFoundSetCount(foundset)
	for ( var i = 1 ; i <= cuantos_f; i ++ )
	{
		foundset.setSelectedIndex(i);
		cuantos_viajes=foundset.liq_cabecera_to_liq_detalle.getSize()  // sacar despues de probar
		gastos_x_viaje=globals.operacion(gastos,'/', foundset.liq_cabecera_to_liq_detalle.getSize()) //gasto total / en numero de viajes
		
	// recorre detalle
	for ( var j = 1 ; j <= foundset.liq_cabecera_to_liq_detalle.getSize(); j ++ )
	{
		foundset.liq_cabecera_to_liq_detalle.setSelectedIndex(j);
		if (foundset.liq_cabecera_to_liq_detalle.viaje_id!=0)  // ver que se hace con notas cred/deb de liquidaciones
		{	
			//  descripcion y codigo de la provincia del origen
			//if (foundset.liq_cabecera_to_liq_detalle.liq_detalle_to_viajes.viajes_origen_to_ciudades.ciudades_to_provincias)
			if (foundset.liq_cabecera_to_liq_detalle.liq_detalle_to_viajes.viajes_origen_to_ciudades.ciudades_to_provincias)
			{	
			desc=foundset.liq_cabecera_to_liq_detalle.liq_detalle_to_viajes.viajes_origen_to_ciudades.ciudades_to_provincias.descripcion
			cod_prov=foundset.liq_cabecera_to_liq_detalle.liq_detalle_to_viajes.viajes_origen_to_ciudades.ciudades_to_provincias.provincia_id // falta relacion
			}
			else
			{
				desc="Desconocida"  // fuerza
				cod_prov=29  // fuerza
			}

			// 10/12/2010 desde     llenar tabla
			fs_aux.newRecord()
			fs_aux.fecha=fecha
			fs_aux.nro_liquidacion=nro_liquidacion
			fs_aux.letra=letra
			fs_aux.sucursal=sucursal
			fs_aux.provincia_id=cod_prov
			fs_aux.viaje_id=foundset.liq_cabecera_to_liq_detalle.viaje_id
			fs_aux.tipo_doc=foundset.tipo_doc  // 18/02/2011 nuevo campo
			// 10/12/2010 hasta   
			
			// importe del viaje tomado de liq_detalle	
			tabla_prov.setValue(cod_prov, 2 , desc)  // descrip. de la provincia
		
			if (foundset.liq_cabecera_to_liq_detalle.liq_detalle_to_viajes.viaje_propio==1) // falta relacion
			
			{// viaje propio  //  en realidad no deberia pasar nunca por aqui= en liq. solo hay terceros
				if (foundset.tipo_doc== 6 || foundset.tipo_doc== 42) // 17/02/2011 6=liqui  42=nota debito viajes
					var opera='+';
				else  // nota credito viajes
					var opera='-';
				/*  anulado 17/02/2011
				tabla_prov.setValue(cod_prov, 3,globals.operacion(tabla_prov.getValue(cod_prov, 3),'+',foundset.liq_cabecera_to_liq_detalle.importe))
				tabla_mov.setValue(uno_mas, 3,globals.operacion(tabla_mov.getValue(uno_mas, 3),'+',foundset.liq_cabecera_to_liq_detalle.importe))
				fs_aux.viajes_propios=foundset.liq_cabecera_to_liq_detalle.importe   // 10/12/2010
				*/
				tabla_prov.setValue(cod_prov, 3,globals.operacion(tabla_prov.getValue(cod_prov, 3),opera,foundset.liq_cabecera_to_liq_detalle.importe))
				// 24/11/2011 : la sgte linea dio error pues usaba tabla_mov (herencia ?)
				tabla_prov.setValue(uno_mas, 3,globals.operacion(tabla_prov.getValue(uno_mas, 3),opera,foundset.liq_cabecera_to_liq_detalle.importe))
				if (foundset.tipo_doc== 6 || foundset.tipo_doc== 42) // 17/02/2011 
					fs_aux.viajes_propios=foundset.liq_cabecera_to_liq_detalle.importe;   // 10/12/2010
				else    // 17/012/2011
					fs_aux.viajes_propios=globals.operacion(foundset.liq_cabecera_to_liq_detalle.importe,'*', (-1));   // 17/12/2011
					
			}
			else
			{// viaje tercero
				//tabla_prov.setValue(cod_prov, 4,globals.operacion(tabla_prov.getValue(cod_prov, 4),'+',foundset.liq_cabecera_to_liq_detalle.importe)) // 17/02/2011 se corrio dentro del if
				// comision_X_viaje=al total del renglon * 7% -> por ahora fijo
				comision_x_viaje=globals.operacion(foundset.liq_cabecera_to_liq_detalle.importe ,'*',f_porcent)  // 16/04/2013 se parametrizo   // 26/04/2013 se setea al inicio o al cambiar fecha hasta
				comision_x_viaje=globals.operacion(comision_x_viaje ,'/',100)
				//  TODO   17/02/2011   
				if (foundset.tipo_doc== 6 || foundset.tipo_doc== 42) // 17/02/2011 6=liqui  42=nota debito viajes
					var opera='+';
				else  // nota credito viajes
					var opera='-';
					/*  // 17/02/2011  desde   anulado
				tabla_prov.setValue(cod_prov, 4,globals.operacion(tabla_prov.getValue(cod_prov, 4),'+',foundset.liq_cabecera_to_liq_detalle.importe)) // 17/02/2011
				//var auxiliar=globals.operacion(comision_x_viaje,'+',gastos_x_viaje)
				tabla_prov.setValue(cod_prov, 5,globals.operacion(tabla_prov.getValue(cod_prov, 5),'+',comision_x_viaje))
				tabla_prov.setValue(cod_prov, 6,globals.operacion(tabla_prov.getValue(cod_prov, 6),'+',gastos_x_viaje))
				tabla_prov.setValue(uno_mas, 4,globals.operacion(tabla_prov.getValue(uno_mas, 4),'+',foundset.liq_cabecera_to_liq_detalle.importe))
				tabla_prov.setValue(uno_mas, 5,globals.operacion(tabla_prov.getValue(uno_mas, 5),'+',comision_x_viaje))
				tabla_prov.setValue(uno_mas, 6,globals.operacion(tabla_prov.getValue(uno_mas, 6),'+',gastos_x_viaje))
				*/  // 17/02/2011 hasta
				
				// 17/02/2011  desde   nuevo  ok
				tabla_prov.setValue(cod_prov, 4,globals.operacion(tabla_prov.getValue(cod_prov, 4),opera,foundset.liq_cabecera_to_liq_detalle.importe)) 
				tabla_prov.setValue(cod_prov, 5,globals.operacion(tabla_prov.getValue(cod_prov, 5),opera,comision_x_viaje))
				tabla_prov.setValue(cod_prov, 6,globals.operacion(tabla_prov.getValue(cod_prov, 6),opera,gastos_x_viaje))
				tabla_prov.setValue(uno_mas, 4,globals.operacion(tabla_prov.getValue(uno_mas, 4),opera,foundset.liq_cabecera_to_liq_detalle.importe))
				tabla_prov.setValue(uno_mas, 5,globals.operacion(tabla_prov.getValue(uno_mas, 5),opera,comision_x_viaje))
				tabla_prov.setValue(uno_mas, 6,globals.operacion(tabla_prov.getValue(uno_mas, 6),opera,gastos_x_viaje))
				// 17/02/2011  hasta   nuevo
				if (foundset.tipo_doc== 6 || foundset.tipo_doc== 42) // 17/02/2011
				{
					fs_aux.viajes_terceros=foundset.liq_cabecera_to_liq_detalle.importe // 10/12/2010
					fs_aux.comision=comision_x_viaje // 10/12/2010
					fs_aux.gastos=gastos_x_viaje // 10/12/2010
				}
				else // 17/02/2011   ok
				{
					fs_aux.viajes_terceros=globals.operacion(foundset.liq_cabecera_to_liq_detalle.importe,'*', (-1)); 
					fs_aux.comision=globals.operacion(comision_x_viaje,'*', (-1));
					fs_aux.gastos=globals.operacion(gastos_x_viaje,'*', (-1));
				}
			}	
		}
		else
		{
		globals.gMensaje = 'Liquidacion/Nota nro. ' + nro_liquidacion + ' no tiene cargado viaje - renglón ' + j
		globals.gMensajes();
		}
	} //for j=detalle
	} //for i=cabecera
	
	// 10/12/2010 desde
	var estado_save=databaseManager.saveData()
	if (estado_save==false)
	{
		globals.gMensaje = 'No pudo grabar detalles de ingresos brutos'
		globals.gMensajes();
	}
	else 
		databaseManager.refreshRecordFromDatabase(fs_aux,-1);
	// 10/12/2010 hasta
	
	// al crear dataset anterior tambien quedan los que están en cero
	// elimina las lineas del dataset que estan en cero creando otro dataset
	var w = 0
	var tabla_final = databaseManager.createEmptyDataSet(0, new Array('Provincia','Descripcion','Viajes Propios','Viajes Terceros','Comision','Gastos'))
	for ( var k = 1 ; k <= uno_mas ; k ++ )
	{
		if (tabla_prov.getValue(k, 3)!=0 || tabla_prov.getValue(k, 4)!=0) // elimina los que estan en cero
		{
			w++;
			if (k!=uno_mas)
				tabla_final.addRow(w,new Array(k,tabla_prov.getValue(k, 2),tabla_prov.getValue(k, 3),tabla_prov.getValue(k, 4),tabla_prov.getValue(k, 5),tabla_prov.getValue(k, 6)));
			else
				tabla_final.addRow(w,new Array(null,tabla_prov.getValue(k, 2),tabla_prov.getValue(k, 3),tabla_prov.getValue(k, 4),tabla_prov.getValue(k, 5),tabla_prov.getValue(k, 6)));
		}	

	}
	/*  
	// 10/12/2010
	var estado=databaseManager.saveData()
	if (estado==false)
	{	
	   globals.gMensaje = 'No pudo salvar tabla auxiliar de ing. brutos'
	   globals.gMensajes();
	   return false;
    }   */

	var titulo='Ingresos Brutos del ' + utils.dateFormat(globals.gFechaDesde , 'dd-MM-yyyy') + ' al ' + utils.dateFormat(globals.gFechaHasta , 'dd-MM-yyyy') 
   	var tipos = new Array (JSColumn.INTEGER,JSColumn.TEXT,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER)
   	if(event.getElementName()== 'buscar')
   	{
   		if (globals.formDS(tabla_final,tipos,titulo,'DIALOG',null,'ingBrut','ingBrut_prov') == false)
   		application.output('FALSE');
   	}
   	else
   	{
		if (globals.formDS(tabla_final,tipos,titulo,'PREVIEW',null,'ingBrut','ingBrut_prov') == false)
		application.output('FALSE');
	}
   	
}
else
{
	globals.gMensaje = 'Por favor complete todos los datos'
	globals.gMensajes();
}
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"8FD7B3AD-9CF4-470C-811F-E8607CDD97E9"}
 */
function onDataChange_fecha_hasta(oldValue, newValue, event) 
{
	// setea  f_porcent que luego se usa en el calculo  //  26/04/2013
	if (globals.gFechaHasta < fecha_abril_2013) 
		f_porcent = 7;
	else
		f_porcent = globals.gPorcenComision;
	return true
}
